// 常用的高阶函数

// map: 遍历数组中的每个元素， 并返回具体的元素
const  map = (array, fn)=>{
    let results = []
    for(let value of array){
        results.push(fn(value))
    }
    return results
}
// let arr = [1, 4, 23 ,2]
// let r = map(arr, v=> v * v)
// console.log('map',r)


// every: 遍历数组中的每个元素是否都满足指定的条件
const every = (array, fn)=>{
    let result = true
    for(let value of array){
        result = fn(value)
        if(!result){
            break
        }
    }
    return result
}
// let arr = [8, 4, 20 ,2]
// let r = every(arr, v=> v %2 === 0)
// console.log('every',r)

// some： 遍历数组中的每个元素是否存在一个满足指定的条件
const some = (array, fn)=>{
    let result = false
    for(let value of array){
        result = fn(value)
        if(result){
            break
        }
    }
    return result
}

// let arr = [8, 4, 15 ,2]
// let r = some(arr, v=> v >10)
// console.log('some',r)

// for...in语句以任意顺序遍历一个对象的除Symbol以外的可枚举属性。
// for...of 语句遍历可迭代对象定义要迭代的数据。